package com.itheim.manager.service;

import com.itheim.manager.dao.ManagerDao;
import com.itheim.manager.domin.Subway;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Properties;

public class ManagerService {

    //创建管理员信息库管对象
    ManagerDao dao = new ManagerDao();


    //业务员的登录功能
    public boolean login(String id, String name) {
        //指挥库管拿到管理人员信息
        Properties prop = dao.findAllUsers();
        //拿本次登录传过来的用户名密码去系统中存的用户信息中进行比对
        //先假设人员录入的信息不存在
        boolean flag = false;
        //拿人员录入的和库里存在的是否存在一致，如果一致标记改为true
        if (prop.containsKey(id) && name.equals(prop.getProperty(id))) {
            flag = true;
        }
        //比到了，返回true，否则返回false
        return flag;

    }

    //业务员的判断地铁站编号是否存在
    public boolean isExists(String ssid) {
        //让库管去查看所有的地铁站信息
        ArrayList<Subway> listSS = dao.findAllSubwayStation();
        //标记位思想：先假设要查找的地铁站ssid编号不存在
        boolean flag = false;
        //遍历所有地铁站信息
        for (Subway ss : listSS) {
            //当前索引位置的地铁站不为null，并且该地铁站的编号和输入的编号一致时修改标记
            if (ss != null && ss.getSubid().equals(ssid)) {
                flag = true;
            }
        }
        return flag;
    }

    //业务员中的添加地铁站信息的功能
    public boolean addSubwayStation(Subway ss) {
        //   return dao.addSubwayStation(ss);
        //使用标记位思想,默认添加不成功
        boolean flag = false;
        //获取添加前的地铁站信息数量
        int before = dao.findAllSubwayStation().size();
        //使用持久层执行添加功能
        dao.addSubwayStation(ss);
        //获取添加后的地铁站信息数量
        int after = dao.findAllSubwayStation().size();
        //判断添加后是不是比添加前多一条数据
        if (after - before == 1) {
            flag = true;
        }
        return flag;
    }

    //业务员中的查看地铁站信息的功能
    public ArrayList<Subway> findAllSubwayStation() {
        ArrayList<Subway> subways = dao.findAllSubwayStation();
        boolean flag = false;
        for (int i = 0; i < subways.size(); i++) {
            Subway subway = subways.get(i);
            if (subway != null) {
                flag = true;
                break;
            }
        }
        if (flag) {
            Collections.sort(subways, (sub1, sub2) -> {
                if (sub1 != null & sub2 != null) {
                    return sub1.getSubid().compareTo(sub2.getSubid());
                } else {
                    return 0;
                }
            });
            return subways;
        } else {
            return null;
        }


    }
}
